package 设计模式.结构型.Adapter适配器.Demo_3;//package 设计模式.结构型.Adapter适配器.Demo_3;
//
//import java.util.ArrayList;
//import java.util.List;
//
///**
// * 中央控制器，负责分发请求到HandlerAdapter
// *
// * @author: 张从龙
// * time: 2022/8/13 17:25
// */
//public class DispatchServlet {
//    public static List<HandlerAdapter> handlerAdapters = new ArrayList<>();
//
//    public DispatchServlet() {
//        handlerAdapters.add(new AnnotationHandlerAdapter());
//        handlerAdapters.add(new HttpHandlerAdapter());
//        handlerAdapters.add(new SimpleHandlerAdapter());
//    }
//
//    public void doDispatch(HttpServletRequest request) {
//        // 一、模拟SpringMVC从request取handler的对象（仅测试用，实际应该通过拦截器拦截Request）
//        // 适配器可以获取到希望的Controller
//        HttpController controller = new HttpController();
//
//        // 二、得到对应适配器
//        HandlerAdapter handler = getHandler(request);
//
//        // 三、通过适配器执行对应的controller对应方法
//        handler.handle(request);
//    }
//
//    public HandlerAdapter getHandler(Controller controller) {
//        //遍历：根据得到的controller(handler), 返回对应适配器
//        for (HandlerAdapter adapter : handlerAdapters) {
//            if (adapter.supports(controller)) {
//                return adapter;
//            }
//        }
//        return null;
//    }
//}